{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import jax\n",
    "import jax.numpy as jnp\n",
    "import numpy as np # get rid of this eventually\n",
    "import argparse\n",
    "from jax import jit\n",
    "from jax.experimental.ode import odeint\n",
    "from functools import partial # reduces arguments to function by making some subset implicit\n",
    "\n",
    "from jax.experimental import stax\n",
    "from jax.experimental import optimizers\n",
    "\n",
    "import os, sys, time\n",
    "sys.path.append('..')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "sys.path.append('../experiment_dblpend/')\n",
    "\n",
    "from lnn import lagrangian_eom_rk4, lagrangian_eom, unconstrained_eom, raw_lagrangian_eom\n",
    "from data import get_dataset\n",
    "from models import mlp as make_mlp\n",
    "from utils import wrap_coords"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "sys.path.append('../hyperopt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from HyperparameterSearch import learned_dynamics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from HyperparameterSearch import extended_mlp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "class ObjectView(object):\n",
    "    def __init__(self, d): self.__dict__ = d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from data import get_trajectory"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "from data import get_trajectory_analytic"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "from physics import analytical_fn\n",
    "\n",
    "vfnc = jax.jit(jax.vmap(analytical_fn))\n",
    "vget = partial(jax.jit, backend='cpu')(jax.vmap(partial(get_trajectory_analytic, mxsteps=100), (0, None), 0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 0.29830917716026306 {'act': [4],\n",
    "# 'batch_size': [27.0], 'dt': [0.09609870774790222],\n",
    "# 'hidden_dim': [596.0], 'l2reg': [0.24927677946969878],\n",
    "# 'layers': [4.0], 'lr': [0.005516656601005163],\n",
    "# 'lr2': [1.897157209816416e-05], 'n_updates': [4.0]}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Now, let's load the best model. To generate more models, see the code below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pickle as pkl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# loaded = pkl.load(open('./params_for_loss_0.29429444670677185_nupdates=1.pkl', 'rb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "args = ObjectView({'dataset_size': 200,\n",
    " 'fps': 10,\n",
    " 'samples': 100,\n",
    " 'num_epochs': 80000,\n",
    " 'seed': 0,\n",
    " 'loss': 'l1',\n",
    " 'act': 'softplus',\n",
    " 'hidden_dim': 600,\n",
    " 'output_dim': 1,\n",
    " 'layers': 3,\n",
    " 'n_updates': 1,\n",
    " 'lr': 0.001,\n",
    " 'lr2': 2e-05,\n",
    " 'dt': 0.1,\n",
    " 'model': 'gln',\n",
    " 'batch_size': 512,\n",
    " 'l2reg': 5.7e-07,\n",
    "})\n",
    "# args = loaded['args']\n",
    "rng = jax.random.PRNGKey(args.seed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from jax.experimental.ode import odeint"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from HyperparameterSearch import new_get_dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "vfnc = jax.jit(jax.vmap(analytical_fn, 0, 0))\n",
    "vget = partial(jax.jit, backend='cpu')(jax.vmap(partial(get_trajectory_analytic, mxsteps=100), (0, None), 0))\n",
    "minibatch_per = 2000\n",
    "batch = 512\n",
    "\n",
    "@jax.jit\n",
    "def get_derivative_dataset(rng):\n",
    "    # randomly sample inputs\n",
    "\n",
    "    y0 = jnp.concatenate([\n",
    "        jax.random.uniform(rng, (batch*minibatch_per, 2))*2.0*np.pi,\n",
    "        (jax.random.uniform(rng+1, (batch*minibatch_per, 2))-0.5)*10*2\n",
    "    ], axis=1)\n",
    "    \n",
    "    return y0, vfnc(y0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "best_params = None\n",
    "best_loss = np.inf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "from itertools import product"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1e-05\n"
     ]
    }
   ],
   "source": [
    "init_random_params, nn_forward_fn = extended_mlp(args)\n",
    "import HyperparameterSearch\n",
    "HyperparameterSearch.nn_forward_fn = nn_forward_fn\n",
    "_, init_params = init_random_params(rng+1, (-1, 4))\n",
    "rng += 1\n",
    "model = (nn_forward_fn, init_params)\n",
    "opt_init, opt_update, get_params = optimizers.adam(args.lr)\n",
    "opt_state = opt_init([[l2/200.0 for l2 in l1] for l1 in init_params])\n",
    "from jax.tree_util import tree_flatten\n",
    "from HyperparameterSearch import make_loss, train\n",
    "from copy import deepcopy as copy\n",
    "# train(args, model, data, rng);\n",
    "from jax.tree_util import tree_flatten\n",
    "\n",
    "@jax.jit\n",
    "def loss(params, batch, l2reg):\n",
    "    state, targets = batch#_rk4\n",
    "    leaves, _ = tree_flatten(params)\n",
    "    l2_norm = sum(jnp.vdot(param, param) for param in leaves)\n",
    "    preds = jax.vmap(\n",
    "        partial(\n",
    "            raw_lagrangian_eom,\n",
    "            learned_dynamics(params)))(state)\n",
    "    return jnp.sum(jnp.abs(preds - targets)) + l2reg*l2_norm/args.batch_size\n",
    "\n",
    "# @jax.jit\n",
    "# def normalize_param_update(param_update):\n",
    "#     new_params = []\n",
    "#     num_weights = args.hidden_dim**2*3\n",
    "#     gradient_norm = sum([jnp.sum(l2**2)\n",
    "#                          for l1 in param_update\n",
    "#                          for l2 in l1\n",
    "#                          if len(l1) != 0])/num_weights\n",
    "# #     gradient_norm = 1 + \n",
    "#     for l1 in param_update:\n",
    "#         if (len(l1)) == 0: new_params.append(()); continue\n",
    "#         new_l1 = []\n",
    "#         for l2 in l1:\n",
    "#             new_l1.append(\n",
    "#                 l2/gradient_norm\n",
    "#             )\n",
    "\n",
    "#         new_params.append(new_l1)\n",
    "        \n",
    "#     return new_params\n",
    "\n",
    "@jax.jit\n",
    "def update_derivative(i, opt_state, batch, l2reg):\n",
    "    params = get_params(opt_state)\n",
    "    param_update = jax.grad(\n",
    "            lambda *args: loss(*args)/len(batch),\n",
    "            0\n",
    "        )(params, batch, l2reg)\n",
    "#     param_update = normalize_param_update(param_update)\n",
    "    params = get_params(opt_state)\n",
    "    return opt_update(i, param_update, opt_state), params\n",
    "\n",
    "\n",
    "best_small_loss = np.inf\n",
    "(nn_forward_fn, init_params) = model\n",
    "iteration = 0\n",
    "total_epochs = 300\n",
    "minibatch_per = 2000\n",
    "train_losses, test_losses = [], []\n",
    "\n",
    "lr = 1e-5 #1e-3\n",
    "import math\n",
    "\n",
    "final_div_factor=1e4\n",
    "\n",
    "#OneCycleLR:\n",
    "@jax.jit\n",
    "def OneCycleLR(pct):\n",
    "    #Rush it:\n",
    "    start = 0.2 #0.2\n",
    "    pct = pct * (1-start) + start\n",
    "    high, low = lr, lr/final_div_factor\n",
    "    \n",
    "    scale = 1.0 - (jnp.cos(2 * jnp.pi * pct) + 1)/2\n",
    "    \n",
    "    return low + (high - low)*scale\n",
    "    \n",
    "from lnn import custom_init\n",
    "\n",
    "opt_init, opt_update, get_params = optimizers.adam(\n",
    "    OneCycleLR\n",
    ")\n",
    "\n",
    "init_params = custom_init(init_params, seed=0)\n",
    "\n",
    "opt_state = opt_init(init_params)\n",
    "# opt_state = opt_init(best_params)\n",
    "bad_iterations = 0\n",
    "print(lr)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Idea: add identity before inverse:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Let's train it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = jax.random.PRNGKey(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "epoch = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1000, 4)\n"
     ]
    }
   ],
   "source": [
    "batch_data = get_derivative_dataset(rng)[0][:1000], get_derivative_dataset(rng)[1][:1000]\n",
    "print(batch_data[0].shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DeviceArray(298.26022, dtype=float32)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "loss(get_params(opt_state), batch_data, 0.0)/len(batch_data[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "opt_state, params = update_derivative(0.0, opt_state, batch_data, 0.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tqdm.notebook import tqdm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "# best_loss = np.inf\n",
    "# best_params = None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fd8267cafa0545dfad76693a2942ad78",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=300.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch=0 lr=3.53541008735192e-06 loss=0.11645260453224182\n",
      "epoch=1 lr=3.6157020986138377e-06 loss=0.11121587455272675\n",
      "epoch=2 lr=3.6963824641134124e-06 loss=0.11095187067985535\n",
      "epoch=3 lr=3.7774289012304507e-06 loss=0.11102080345153809\n",
      "epoch=4 lr=3.858819127344759e-06 loss=0.11111775785684586\n",
      "epoch=5 lr=3.940529040846741e-06 loss=0.11088093370199203\n",
      "epoch=6 lr=4.022537723358255e-06 loss=0.11053554713726044\n",
      "epoch=7 lr=4.104820163775003e-06 loss=0.11097639799118042\n",
      "epoch=8 lr=4.187354534224141e-06 loss=0.11099375784397125\n",
      "epoch=9 lr=4.270117187843425e-06 loss=0.11077816784381866\n",
      "epoch=10 lr=4.353084477770608e-06 loss=0.110976442694664\n",
      "epoch=11 lr=4.436233666638145e-06 loss=0.11080900579690933\n",
      "epoch=12 lr=4.51954065283644e-06 loss=0.11088813096284866\n",
      "epoch=13 lr=4.60298360849265e-06 loss=0.1110236793756485\n",
      "epoch=14 lr=4.6865370677551255e-06 loss=0.11059053987264633\n",
      "epoch=15 lr=4.770179657498375e-06 loss=0.11085053533315659\n",
      "epoch=16 lr=4.85388682136545e-06 loss=0.1109449714422226\n",
      "epoch=17 lr=4.937634912494104e-06 loss=0.1109158918261528\n",
      "epoch=18 lr=5.021400284022093e-06 loss=0.11091697961091995\n",
      "epoch=19 lr=5.105160198581871e-06 loss=0.11045420914888382\n",
      "epoch=20 lr=5.188890554563841e-06 loss=0.11057215929031372\n",
      "epoch=21 lr=5.272568159853108e-06 loss=0.1106092780828476\n",
      "epoch=22 lr=5.356169367587427e-06 loss=0.10980541259050369\n",
      "epoch=23 lr=5.439670985651901e-06 loss=0.11046552658081055\n",
      "epoch=24 lr=5.523048912436934e-06 loss=0.11013047397136688\n",
      "epoch=25 lr=5.606280410574982e-06 loss=0.11071895807981491\n",
      "epoch=26 lr=5.689341833203798e-06 loss=0.11105978488922119\n",
      "epoch=27 lr=5.772209078713786e-06 loss=0.10972379893064499\n",
      "epoch=28 lr=5.854860773979453e-06 loss=0.1105145514011383\n",
      "epoch=29 lr=5.937272362643853e-06 loss=0.11008085310459137\n",
      "epoch=30 lr=6.019420652592089e-06 loss=0.11081518977880478\n",
      "epoch=31 lr=6.101282906456618e-06 loss=0.10983306914567947\n",
      "epoch=32 lr=6.182836841617245e-06 loss=0.1098426878452301\n",
      "epoch=33 lr=6.264057901717024e-06 loss=0.10981699079275131\n",
      "epoch=34 lr=6.344924713630462e-06 loss=0.11027263104915619\n",
      "epoch=35 lr=6.4254140852426644e-06 loss=0.11009667813777924\n",
      "epoch=36 lr=6.505503279186087e-06 loss=0.11008836328983307\n",
      "epoch=37 lr=6.5851700128405355e-06 loss=0.10970569401979446\n",
      "epoch=38 lr=6.664391548838466e-06 loss=0.11100056022405624\n",
      "epoch=39 lr=6.743146968801739e-06 loss=0.1085117980837822\n",
      "epoch=40 lr=6.821412625868106e-06 loss=0.10979907214641571\n",
      "epoch=41 lr=6.8991671469120774e-06 loss=0.10995670408010483\n",
      "epoch=42 lr=6.976388249313459e-06 loss=0.10989423841238022\n",
      "epoch=43 lr=7.0530554694414604e-06 loss=0.10918614268302917\n",
      "epoch=44 lr=7.129146524675889e-06 loss=0.10897506773471832\n",
      "epoch=45 lr=7.204639587143902e-06 loss=0.11013175547122955\n",
      "epoch=46 lr=7.279513283720007e-06 loss=0.10842091590166092\n",
      "epoch=47 lr=7.353747150773415e-06 loss=0.10905831307172775\n",
      "epoch=48 lr=7.427322088915389e-06 loss=0.10923684388399124\n",
      "epoch=49 lr=7.500214451283682e-06 loss=0.1102827712893486\n",
      "epoch=50 lr=7.5724051384895574e-06 loss=0.10919631272554398\n",
      "epoch=51 lr=7.643873686902225e-06 loss=0.1091272234916687\n",
      "epoch=52 lr=7.714601451880299e-06 loss=0.1084405779838562\n",
      "epoch=53 lr=7.784566150803585e-06 loss=0.10915550589561462\n",
      "epoch=54 lr=7.853748684283346e-06 loss=0.10825174301862717\n",
      "epoch=55 lr=7.922130862425547e-06 loss=0.10934004187583923\n",
      "epoch=56 lr=7.989694495336153e-06 loss=0.11018098890781403\n",
      "epoch=57 lr=8.056415936152916e-06 loss=0.10884448885917664\n",
      "epoch=58 lr=8.12228063296061e-06 loss=0.10905773937702179\n",
      "epoch=59 lr=8.187269486370496e-06 loss=0.10857034474611282\n",
      "epoch=60 lr=8.25136430648854e-06 loss=0.10993754118680954\n",
      "epoch=61 lr=8.314545993926004e-06 loss=0.10852953791618347\n",
      "epoch=62 lr=8.376796358788852e-06 loss=0.10983790457248688\n",
      "epoch=63 lr=8.438099030172452e-06 loss=0.10859303921461105\n",
      "epoch=64 lr=8.498437637172174e-06 loss=0.10810678452253342\n",
      "epoch=65 lr=8.557794899388682e-06 loss=0.10872457176446915\n",
      "epoch=66 lr=8.61615171743324e-06 loss=0.10892783105373383\n",
      "epoch=67 lr=8.67349353939062e-06 loss=0.10814107954502106\n",
      "epoch=68 lr=8.729805813345592e-06 loss=0.10868991911411285\n",
      "epoch=69 lr=8.785070349404123e-06 loss=0.10957345366477966\n",
      "epoch=70 lr=8.839272595650982e-06 loss=0.108676977455616\n",
      "epoch=71 lr=8.892396181181539e-06 loss=0.10778353363275528\n",
      "epoch=72 lr=8.94442928256467e-06 loss=0.10803697258234024\n",
      "epoch=73 lr=8.99535370990634e-06 loss=0.10804814100265503\n",
      "epoch=74 lr=9.045156730280723e-06 loss=0.10896649211645126\n",
      "epoch=75 lr=9.093823791772593e-06 loss=0.10836223512887955\n",
      "epoch=76 lr=9.141343070950825e-06 loss=0.10813482105731964\n",
      "epoch=77 lr=9.187699106405489e-06 loss=0.10795410722494125\n",
      "epoch=78 lr=9.232880074705463e-06 loss=0.10901598632335663\n",
      "epoch=79 lr=9.27687233343022e-06 loss=0.1100221574306488\n",
      "epoch=80 lr=9.319664968643337e-06 loss=0.10801181197166443\n",
      "epoch=81 lr=9.36124433792429e-06 loss=0.10875190794467926\n",
      "epoch=82 lr=9.401600436831359e-06 loss=0.10617510229349136\n",
      "epoch=83 lr=9.440719622944016e-06 loss=0.10793821513652802\n",
      "epoch=84 lr=9.478592801315244e-06 loss=0.10836239904165268\n",
      "epoch=85 lr=9.515209058008622e-06 loss=0.10693323612213135\n",
      "epoch=86 lr=9.55055838858243e-06 loss=0.10809595137834549\n",
      "epoch=87 lr=9.584629879100248e-06 loss=0.10834357142448425\n",
      "epoch=88 lr=9.617414434615057e-06 loss=0.10674401372671127\n",
      "epoch=89 lr=9.64890296017984e-06 loss=0.1072845607995987\n",
      "epoch=90 lr=9.679086360847577e-06 loss=0.10909373313188553\n",
      "epoch=91 lr=9.707956451165956e-06 loss=0.10650701820850372\n",
      "epoch=92 lr=9.735505045682658e-06 loss=0.10929550230503082\n",
      "epoch=93 lr=9.76172486844007e-06 loss=0.10723818093538284\n",
      "epoch=94 lr=9.786607733985875e-06 loss=0.1047123521566391\n",
      "epoch=95 lr=9.81014636636246e-06 loss=0.1072940081357956\n",
      "epoch=96 lr=9.832335308601614e-06 loss=0.10815825313329697\n",
      "epoch=97 lr=9.853168194240425e-06 loss=0.1053895652294159\n",
      "epoch=98 lr=9.87263865681598e-06 loss=0.10706069320440292\n",
      "epoch=99 lr=9.890740329865366e-06 loss=0.10746884346008301\n",
      "epoch=100 lr=9.90747048490448e-06 loss=0.10468041896820068\n",
      "epoch=101 lr=9.922822755470406e-06 loss=0.10700853914022446\n",
      "epoch=102 lr=9.93679350358434e-06 loss=0.10787925869226456\n",
      "epoch=103 lr=9.94937727227807e-06 loss=0.10447873175144196\n",
      "epoch=104 lr=9.960572242562193e-06 loss=0.10672973841428757\n",
      "epoch=105 lr=9.970375685952604e-06 loss=0.10674896836280823\n",
      "epoch=106 lr=9.978783964470495e-06 loss=0.10408999025821686\n",
      "epoch=107 lr=9.985793440137058e-06 loss=0.10829337686300278\n",
      "epoch=108 lr=9.991404112952296e-06 loss=0.10413895547389984\n",
      "epoch=109 lr=9.9956132544321e-06 loss=0.10542222857475281\n",
      "epoch=110 lr=9.998420864576474e-06 loss=0.10552699118852615\n",
      "epoch=111 lr=9.999825124396011e-06 loss=0.10564102232456207\n",
      "epoch=112 lr=9.999825124396011e-06 loss=0.10440906882286072\n",
      "epoch=113 lr=9.998422683565877e-06 loss=0.10488957911729813\n",
      "epoch=114 lr=9.995616892410908e-06 loss=0.10431116074323654\n",
      "epoch=115 lr=9.991408660425805e-06 loss=0.10559535026550293\n",
      "epoch=116 lr=9.985799806599971e-06 loss=0.10487396270036697\n",
      "epoch=117 lr=9.978790330933407e-06 loss=0.10429417341947556\n",
      "epoch=118 lr=9.970384780899622e-06 loss=0.10356982052326202\n",
      "epoch=119 lr=9.960583156498615e-06 loss=0.10410139709711075\n",
      "epoch=120 lr=9.949389095709193e-06 loss=0.1033564880490303\n",
      "epoch=121 lr=9.936806236510165e-06 loss=0.10425261408090591\n",
      "epoch=122 lr=9.922837307385635e-06 loss=0.10265835374593735\n",
      "epoch=123 lr=9.907486855809111e-06 loss=0.10250823199748993\n",
      "epoch=124 lr=9.8907576102647e-06 loss=0.10416904836893082\n",
      "epoch=125 lr=9.872656846710015e-06 loss=0.10329270362854004\n",
      "epoch=126 lr=9.853187293629162e-06 loss=0.10168487578630447\n",
      "epoch=127 lr=9.832357136474457e-06 loss=0.10116548836231232\n",
      "epoch=128 lr=9.810169103730004e-06 loss=0.10249575227499008\n",
      "epoch=129 lr=9.786631380848121e-06 loss=0.10268820822238922\n",
      "epoch=130 lr=9.761750334291719e-06 loss=0.09934281557798386\n",
      "epoch=131 lr=9.735531421029009e-06 loss=0.1006186231970787\n",
      "epoch=132 lr=9.70798464550171e-06 loss=0.1021687388420105\n",
      "epoch=133 lr=9.679116374172736e-06 loss=0.1021689623594284\n",
      "epoch=134 lr=9.648932973504998e-06 loss=0.10081358999013901\n",
      "epoch=135 lr=9.617446266929619e-06 loss=0.10001219063997269\n",
      "epoch=136 lr=9.584662620909512e-06 loss=0.10009706020355225\n",
      "epoch=137 lr=9.550592039886396e-06 loss=0.10117053240537643\n",
      "epoch=138 lr=9.515244528301992e-06 loss=0.1010860875248909\n",
      "epoch=139 lr=9.478630090598017e-06 loss=0.09981221705675125\n",
      "epoch=140 lr=9.44075782172149e-06 loss=0.09803178161382675\n",
      "epoch=141 lr=9.401639545103535e-06 loss=0.10026580095291138\n",
      "epoch=142 lr=9.361284355691168e-06 loss=0.09856798499822617\n",
      "epoch=143 lr=9.319706805399619e-06 loss=0.09830654412508011\n",
      "epoch=144 lr=9.276915079681203e-06 loss=0.09835507720708847\n",
      "epoch=145 lr=9.232923730451148e-06 loss=0.09804670512676239\n",
      "epoch=146 lr=9.187744581140578e-06 loss=0.09932740032672882\n",
      "epoch=147 lr=9.141389455180615e-06 loss=0.09778297692537308\n",
      "epoch=148 lr=9.093871994991787e-06 loss=0.09720072150230408\n",
      "epoch=149 lr=9.045204933499917e-06 loss=0.09779360890388489\n",
      "epoch=150 lr=8.995402822620235e-06 loss=0.09521219879388809\n",
      "epoch=151 lr=8.944479304773267e-06 loss=0.09703436493873596\n",
      "epoch=152 lr=8.892448931874242e-06 loss=0.094885915517807\n",
      "epoch=153 lr=8.839325346343685e-06 loss=0.09695422649383545\n",
      "epoch=154 lr=8.78512582858093e-06 loss=0.0941348448395729\n",
      "epoch=155 lr=8.7298612925224e-06 loss=0.09416206926107407\n",
      "epoch=156 lr=8.67354992806213e-06 loss=0.09581366926431656\n",
      "epoch=157 lr=8.616209015599452e-06 loss=0.09380485117435455\n",
      "epoch=158 lr=8.557852197554894e-06 loss=0.09333278238773346\n",
      "epoch=159 lr=8.498496754327789e-06 loss=0.09452585875988007\n",
      "epoch=160 lr=8.43815905682277e-06 loss=0.09357675164937973\n",
      "epoch=161 lr=8.376856385439169e-06 loss=0.09380781650543213\n",
      "epoch=162 lr=8.31460602057632e-06 loss=0.09465888142585754\n",
      "epoch=163 lr=8.251427061622962e-06 loss=0.09384113550186157\n",
      "epoch=164 lr=8.187334060494322e-06 loss=0.09341228008270264\n",
      "epoch=165 lr=8.122346116579138e-06 loss=0.09279050678014755\n",
      "epoch=166 lr=8.056480510276742e-06 loss=0.09291040152311325\n",
      "epoch=167 lr=7.989759069459978e-06 loss=0.09193019568920135\n",
      "epoch=168 lr=7.922198165033478e-06 loss=0.09250010550022125\n",
      "epoch=169 lr=7.853816896385979e-06 loss=0.09180530160665512\n",
      "epoch=170 lr=7.784634362906218e-06 loss=0.09129239618778229\n",
      "epoch=171 lr=7.714670573477633e-06 loss=0.0910787507891655\n",
      "epoch=172 lr=7.643944627488963e-06 loss=0.09006045013666153\n",
      "epoch=173 lr=7.572476533823647e-06 loss=0.0913037657737732\n",
      "epoch=174 lr=7.500287210859824e-06 loss=0.08947151154279709\n",
      "epoch=175 lr=7.427395303238882e-06 loss=0.08966460078954697\n",
      "epoch=176 lr=7.353820365096908e-06 loss=0.08968701958656311\n",
      "epoch=177 lr=7.279584679054096e-06 loss=0.0891961082816124\n",
      "epoch=178 lr=7.204713256214745e-06 loss=0.08947204053401947\n",
      "epoch=179 lr=7.129221103241434e-06 loss=0.08821677416563034\n",
      "epoch=180 lr=7.0531314122490585e-06 loss=0.08790134638547897\n",
      "epoch=181 lr=6.976465101615759e-06 loss=0.08811262995004654\n",
      "epoch=182 lr=6.899242634972325e-06 loss=0.08640791475772858\n",
      "epoch=183 lr=6.821489023423055e-06 loss=0.08730781078338623\n",
      "epoch=184 lr=6.743224275851389e-06 loss=0.08670624345541\n",
      "epoch=185 lr=6.664469765382819e-06 loss=0.0861116275191307\n",
      "epoch=186 lr=6.585248684132239e-06 loss=0.08618141710758209\n",
      "epoch=187 lr=6.505582859972492e-06 loss=0.0871734544634819\n",
      "epoch=188 lr=6.4254941207764205e-06 loss=0.08602049946784973\n",
      "epoch=189 lr=6.345005203911569e-06 loss=0.0858013927936554\n",
      "epoch=190 lr=6.264138846745482e-06 loss=0.08557379245758057\n",
      "epoch=191 lr=6.182917786645703e-06 loss=0.08504987508058548\n",
      "epoch=192 lr=6.101365215727128e-06 loss=0.08482072502374649\n",
      "epoch=193 lr=6.019501142873196e-06 loss=0.08515217900276184\n",
      "epoch=194 lr=5.937353307672311e-06 loss=0.08472207188606262\n",
      "epoch=195 lr=5.854942173755262e-06 loss=0.08404465764760971\n",
      "epoch=196 lr=5.772290933236945e-06 loss=0.08453381806612015\n",
      "epoch=197 lr=5.689424142474309e-06 loss=0.08337386697530746\n",
      "epoch=198 lr=5.606363174592843e-06 loss=0.0836155042052269\n",
      "epoch=199 lr=5.523129857465392e-06 loss=0.08345740288496017\n",
      "epoch=200 lr=5.439751930680359e-06 loss=0.08363361656665802\n",
      "epoch=201 lr=5.356251222110586e-06 loss=0.0823959931731224\n",
      "epoch=202 lr=5.272650469123619e-06 loss=0.08313436061143875\n",
      "epoch=203 lr=5.188973318581702e-06 loss=0.08185262978076935\n",
      "epoch=204 lr=5.105242962599732e-06 loss=0.08182049542665482\n",
      "epoch=205 lr=5.021483502787305e-06 loss=0.08193966001272202\n",
      "epoch=206 lr=4.937718131259317e-06 loss=0.0814216211438179\n",
      "epoch=207 lr=4.853970040130662e-06 loss=0.08091078698635101\n",
      "epoch=208 lr=4.770263785758289e-06 loss=0.08112740516662598\n",
      "epoch=209 lr=4.686618922278285e-06 loss=0.0800306424498558\n",
      "epoch=210 lr=4.603065008268459e-06 loss=0.08081136643886566\n",
      "epoch=211 lr=4.519622962106951e-06 loss=0.07988520711660385\n",
      "epoch=212 lr=4.436315521161305e-06 loss=0.08044128865003586\n",
      "epoch=213 lr=4.353166787041118e-06 loss=0.07961104810237885\n",
      "epoch=214 lr=4.270199042366585e-06 loss=0.07944215834140778\n",
      "epoch=215 lr=4.187434569757897e-06 loss=0.07937891036272049\n",
      "epoch=216 lr=4.1049006540561095e-06 loss=0.07988286763429642\n",
      "epoch=217 lr=4.022617758892011e-06 loss=0.07899588346481323\n",
      "epoch=218 lr=3.940609985875199e-06 loss=0.07862580567598343\n",
      "epoch=219 lr=3.858899617625866e-06 loss=0.07855773717164993\n",
      "epoch=220 lr=3.7775093915115576e-06 loss=0.078107088804245\n",
      "epoch=221 lr=3.6964629543945193e-06 loss=0.07836230099201202\n",
      "epoch=222 lr=3.615782361521269e-06 loss=0.07792561501264572\n",
      "epoch=223 lr=3.535490577633027e-06 loss=0.07768455147743225\n",
      "epoch=224 lr=3.455609885349986e-06 loss=0.07715358585119247\n",
      "epoch=225 lr=3.376160520929261e-06 loss=0.07740391790866852\n",
      "epoch=226 lr=3.297169769211905e-06 loss=0.07726872712373734\n",
      "epoch=227 lr=3.2186567295866553e-06 loss=0.0768754780292511\n",
      "epoch=228 lr=3.1406443667947315e-06 loss=0.07642637193202972\n",
      "epoch=229 lr=3.0631542813353008e-06 loss=0.07686550915241241\n",
      "epoch=230 lr=2.9862076189601794e-06 loss=0.07624971121549606\n",
      "epoch=231 lr=2.9098264349158853e-06 loss=0.07615771144628525\n",
      "epoch=232 lr=2.834031874954235e-06 loss=0.07594336569309235\n",
      "epoch=233 lr=2.758843947958667e-06 loss=0.0761604979634285\n",
      "epoch=234 lr=2.6842872102861293e-06 loss=0.0752788856625557\n",
      "epoch=235 lr=2.610380533951684e-06 loss=0.07567745447158813\n",
      "epoch=236 lr=2.537145064707147e-06 loss=0.07531963288784027\n",
      "epoch=237 lr=2.464601038809633e-06 loss=0.07548356801271439\n",
      "epoch=238 lr=2.392769147263607e-06 loss=0.07485649734735489\n",
      "epoch=239 lr=2.321669171578833e-06 loss=0.07494990527629852\n",
      "epoch=240 lr=2.2513211206387496e-06 loss=0.07466519623994827\n",
      "epoch=241 lr=2.181743411711068e-06 loss=0.07450886815786362\n",
      "epoch=242 lr=2.112958100042306e-06 loss=0.07411233335733414\n",
      "epoch=243 lr=2.0449840576475253e-06 loss=0.07436840981245041\n",
      "epoch=244 lr=1.9778394744207617e-06 loss=0.07432913035154343\n",
      "epoch=245 lr=1.9115432223770767e-06 loss=0.07379957288503647\n",
      "epoch=246 lr=1.8461145145920455e-06 loss=0.07397019863128662\n",
      "epoch=247 lr=1.7815709725255147e-06 loss=0.07364539802074432\n",
      "epoch=248 lr=1.7179308997583576e-06 loss=0.07353881001472473\n",
      "epoch=249 lr=1.655212713558285e-06 loss=0.0734546035528183\n",
      "epoch=250 lr=1.5934339216983062e-06 loss=0.07309593260288239\n",
      "epoch=251 lr=1.532609303467325e-06 loss=0.07355116307735443\n"
     ]
    }
   ],
   "source": [
    "for epoch in tqdm(range(epoch, total_epochs)):\n",
    "    epoch_loss = 0.0\n",
    "    num_samples = 0\n",
    "    all_batch_data = get_derivative_dataset(rng)\n",
    "    for minibatch in range(minibatch_per):\n",
    "        fraction = (epoch + minibatch/minibatch_per)/total_epochs\n",
    "        batch_data = (all_batch_data[0][minibatch*batch:(minibatch+1)*batch], all_batch_data[1][minibatch*batch:(minibatch+1)*batch])\n",
    "        rng += 10\n",
    "        opt_state, params = update_derivative(fraction, opt_state, batch_data, 1e-6)\n",
    "        cur_loss = loss(params, batch_data, 0.0)\n",
    "        epoch_loss += cur_loss\n",
    "        num_samples += batch\n",
    "    closs = epoch_loss/num_samples\n",
    "    print('epoch={} lr={} loss={}'.format(\n",
    "        epoch, OneCycleLR(fraction), closs)\n",
    "         )\n",
    "    if closs < best_loss:\n",
    "        best_loss = closs\n",
    "        best_params = [[copy(jax.device_get(l2)) for l2 in l1] if len(l1) > 0 else () for l1 in params]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Look at distribution of weights to make a better model?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# p = get_params(opt_state)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "# pkl.dump(\n",
    "#     best_params,\n",
    "#     open('best_dblpendulum_params_v5.pt', 'wb')\n",
    "# )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "best_params = pkl.load(open('best_dblpendulum_params_v5.pt', 'rb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "opt_state = opt_init(best_params)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Make sure the args are the same:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "# opt_state = opt_init(loaded['params'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DeviceArray([7, 7], dtype=uint32)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rng+7"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The seed: [8, 8] looks pretty good! Set args.n_updates=3, and the file params_for_loss_0.29429444670677185_nupdates=1.pkl."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "max_t = 10\n",
    "new_dataset = new_get_dataset(jax.random.PRNGKey(2),\n",
    "                              t_span=[0, max_t],\n",
    "                              fps=10, test_split=1.0,\n",
    "                              unlimited_steps=False)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "t = new_dataset['x'][0, :]\n",
    "tall = [jax.device_get(t)]\n",
    "p = get_params(opt_state)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(99, 4)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_dataset['x'].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred_tall = jax.device_get(odeint(\n",
    "    partial(raw_lagrangian_eom, learned_dynamics(p)),\n",
    "    t,\n",
    "    np.linspace(0, max_t, num=new_dataset['x'].shape[0]),\n",
    "    mxsteps=100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "@jit\n",
    "def kinetic_energy(state, m1=1, m2=1, l1=1, l2=1, g=9.8):\n",
    "    q, q_dot = jnp.split(state, 2)\n",
    "    (t1, t2), (w1, w2) = q, q_dot\n",
    "\n",
    "    T1 = 0.5 * m1 * (l1 * w1)**2\n",
    "    T2 = 0.5 * m2 * ((l1 * w1)**2 + (l2 * w2)**2 + 2 * l1 * l2 * w1 * w2 * jnp.cos(t1 - t2))\n",
    "    T = T1 + T2\n",
    "    return T\n",
    "\n",
    "@jit\n",
    "def potential_energy(state, m1=1, m2=1, l1=1, l2=1, g=9.8):\n",
    "    q, q_dot = jnp.split(state, 2)\n",
    "    (t1, t2), (w1, w2) = q, q_dot\n",
    "\n",
    "    y1 = -l1 * jnp.cos(t1)\n",
    "    y2 = y1 - l2 * jnp.cos(t2)\n",
    "    V = m1 * g * y1 + m2 * g * y2\n",
    "    return V"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rc('font', family='serif')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's compare energy for a variety of initial conditions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "99bc80b6e1694c6993142a47e53152bb",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=40.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 current error 0.0032019778\n",
      "1 current error 0.0030626245\n",
      "2 current error 0.0020846867\n",
      "3 current error 0.010120585\n",
      "4 current error 0.008716746\n",
      "5 current error 0.0073034214\n",
      "6 current error 0.006315549\n",
      "7 current error 0.0055570183\n",
      "8 current error 0.0049400115\n",
      "9 current error 0.004451239\n",
      "10 current error 0.0040733293\n",
      "11 current error 0.0037569916\n",
      "12 current error 0.0034888124\n",
      "13 current error 0.003337757\n",
      "14 current error 0.0045985435\n",
      "15 current error 0.0043222886\n",
      "16 current error 0.005243502\n",
      "17 current error 0.0049745427\n",
      "18 current error 0.0047285967\n",
      "19 current error 0.004574533\n",
      "20 current error 0.0043959897\n",
      "21 current error 0.004404506\n",
      "22 current error 0.004306449\n",
      "23 current error 0.004128184\n",
      "24 current error 0.004058894\n",
      "25 current error 0.004031554\n",
      "26 current error 0.0038856007\n",
      "27 current error 0.0040106396\n",
      "28 current error 0.0039303377\n",
      "29 current error 0.0038961158\n",
      "30 current error 0.0037735207\n",
      "31 current error 0.0036706543\n",
      "32 current error 0.0035803968\n",
      "33 current error 0.0037341863\n",
      "34 current error 0.004434448\n",
      "35 current error 0.004520346\n",
      "36 current error 0.0044039357\n",
      "37 current error 0.0044440315\n",
      "38 current error 0.004332579\n",
      "39 current error 0.004257551\n",
      "\n"
     ]
    }
   ],
   "source": [
    "all_errors = []\n",
    "for i in tqdm(range(40)):\n",
    "    max_t = 100\n",
    "    new_dataset = new_get_dataset(jax.random.PRNGKey(i),\n",
    "                                  t_span=[0, max_t],\n",
    "                                  fps=10, test_split=1.0,\n",
    "                                  unlimited_steps=False)\n",
    "    t = new_dataset['x'][0, :]\n",
    "    tall = [jax.device_get(t)]\n",
    "    p = best_params\n",
    "    pred_tall = jax.device_get(odeint(\n",
    "        partial(raw_lagrangian_eom, learned_dynamics(p)),\n",
    "        t,\n",
    "        np.linspace(0, max_t, num=new_dataset['x'].shape[0]),\n",
    "        mxsteps=100))\n",
    "\n",
    "    total_true_energy = (\n",
    "        jax.vmap(kinetic_energy, 0, 0)(new_dataset['x'][:]) + \\\n",
    "        jax.vmap(potential_energy, 0, 0)(new_dataset['x'][:])\n",
    "    )\n",
    "    total_predicted_energy = (\n",
    "        jax.vmap(kinetic_energy, 0, 0)(pred_tall[:]) + \\\n",
    "        jax.vmap(potential_energy, 0, 0)(pred_tall[:])\n",
    "    )\n",
    "\n",
    "    scale=29.4\n",
    "\n",
    "    # translation = jnp.min(total_true_energy) + 1\n",
    "    # total_true_energy -= translation\n",
    "    # total_predicted_energy -= translation\n",
    "\n",
    "    cur_error = jnp.abs((total_predicted_energy-total_true_energy)[-1])/scale\n",
    "    all_errors.append(cur_error)\n",
    "    \n",
    "    print(i, 'current error', jnp.average(all_errors))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DeviceArray(0.00057847, dtype=float32)"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plots made down here:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [],
   "source": [
    "total_predicted_energy_b = np.load('baseline_dblpend_energy.npy')\n",
    "pred_tall_b = np.load('baseline_dblpend_prediction.npy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Time')"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "tall = np.array(tall)\n",
    "plt.plot(new_dataset['x'][:500, 0])\n",
    "plt.plot(pred_tall[:500, 0])#[:100, 0])\n",
    "plt.ylabel(r'$\\theta_1$')\n",
    "plt.xlabel('Time')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DeviceArray(16.890951, dtype=float32)"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "jnp.max(jax.vmap(kinetic_energy, 0, 0)(new_dataset['x'][:]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DeviceArray(29.397213, dtype=float32)"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "jnp.max(jnp.abs(jax.vmap(potential_energy, 0, 0)(new_dataset['x'][:])))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We set the scale of the system as the max potential energy of the double\n",
    "pendulum:\n",
    "\n",
    "$9.8\\times1\\times1 + 9.8\\times1\\times2=29.4$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-0.06, 0.01)"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "total_true_energy = (\n",
    "    jax.vmap(kinetic_energy, 0, 0)(new_dataset['x'][:]) + \\\n",
    "    jax.vmap(potential_energy, 0, 0)(new_dataset['x'][:])\n",
    ")\n",
    "total_predicted_energy = (\n",
    "    jax.vmap(kinetic_energy, 0, 0)(pred_tall[:]) + \\\n",
    "    jax.vmap(potential_energy, 0, 0)(pred_tall[:])\n",
    ")\n",
    "\n",
    "scale=29.4\n",
    "\n",
    "# translation = jnp.min(total_true_energy) + 1\n",
    "# total_true_energy -= translation\n",
    "# total_predicted_energy -= translation\n",
    "\n",
    "plt.plot(\n",
    "    jnp.abs(total_predicted_energy-total_true_energy)/scale\n",
    ")\n",
    "\n",
    "plt.ylabel('Absolute Error in Total Energy/Max Potential Energy')\n",
    "plt.xlabel('Time')\n",
    "plt.ylim(-0.06, 0.01)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = jax.random.PRNGKey(int(1e9))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(100000, 4)\n"
     ]
    }
   ],
   "source": [
    "batch_data = get_derivative_dataset(rng)[0][:100000], get_derivative_dataset(rng)[1][:100000]\n",
    "print(batch_data[0].shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DeviceArray(0.06889821, dtype=float32)"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "loss(best_params, batch_data, 0.0)/len(batch_data[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [],
   "source": [
    "# np.save('lnn_dblpend_energy.npy', total_predicted_energy)\n",
    "# np.save('lnn_dblpend_prediction.npy', pred_tall)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's compare:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "tall = np.array(tall)\n",
    "fig, ax = plt.subplots(2, 2, sharey=True)\n",
    "\n",
    "\n",
    "for i in range(2):\n",
    "\n",
    "    if i == 1:\n",
    "        start = 1400\n",
    "        end = 1500\n",
    "    if i == 0:\n",
    "        start = 0\n",
    "        end = 100\n",
    "        \n",
    "    dom = np.linspace(start/10, end/10, num=end-start)\n",
    "    ax[0, i].plot(dom, pred_tall[start:end, 0], label='LNN')#[:100, 0])\n",
    "    ax[0, i].plot(dom, pred_tall_b[start:end, 0], label='Baseline')#[:100, 0])\n",
    "    ax[0, i].plot(dom, new_dataset['x'][start:end, 0], label='Truth')\n",
    "    # ax[0].set_xlabel('Time')\n",
    "    ax[1, i].plot(dom, -new_dataset['x'][start:end, 0] + pred_tall[start:end, 0],\n",
    "              label='LNN')#[:100, 0])\n",
    "    ax[1, i].plot(dom, -new_dataset['x'][start:end, 0] + pred_tall_b[start:end, 0],\n",
    "              label='Baseline')#[:100, 0])\n",
    "    if i == 0:\n",
    "        ax[0, i].set_ylabel(r'$\\theta_1$')\n",
    "        ax[1, i].set_ylabel(r'Error in $\\theta_1$')\n",
    "    \n",
    "    ax[1, i].set_xlabel('Time')\n",
    "    if i == 0:\n",
    "        ax[0, i].legend()\n",
    "        ax[1, i].legend()\n",
    "    \n",
    "\n",
    "for i in range(2):\n",
    "    ax[i, 0].spines['right'].set_visible(False)\n",
    "    ax[i, 1].spines['left'].set_visible(False)\n",
    "#     ax[i, 0].yaxis.tick_left()\n",
    "#     ax[i, 0].tick_params(labelright='off')\n",
    "    ax[i, 1].yaxis.tick_right()\n",
    "\n",
    "for i in range(2):\n",
    "    d = .015 # how big to make the diagonal lines in axes coordinates\n",
    "    # arguments to pass plot, just so we don't keep repeating them\n",
    "    kwargs = dict(transform=ax[i, 0].transAxes, color='k', clip_on=False)\n",
    "    ax[i, 0].plot((1-d,1+d), (-d,+d), **kwargs)\n",
    "    ax[i, 0].plot((1-d,1+d),(1-d,1+d), **kwargs)\n",
    "    kwargs.update(transform=ax[i, 1].transAxes)  # switch to the bottom axes\n",
    "    ax[i, 1].plot((-d,+d), (1-d,1+d), **kwargs)\n",
    "    ax[i, 1].plot((-d,+d), (-d,+d), **kwargs)\n",
    "\n",
    "plt.tight_layout()    \n",
    "plt.savefig('discrepancy_plot.pdf')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "start = 0\n",
    "end = 9999\n",
    "dom = np.linspace(start/10, end/10, num=end-start)\n",
    "\n",
    "scale=29.4\n",
    "\n",
    "fig, ax = plt.subplots(2, 1, sharex=True)\n",
    "# translation = jnp.min(total_true_energy) + 1\n",
    "# total_true_energy -= translation\n",
    "# total_predicted_energy -= translation\n",
    "\n",
    "ax[0].plot(\n",
    "    dom,\n",
    "    (total_predicted_energy),\n",
    "    label='LNN'\n",
    ")\n",
    "ax[0].plot(\n",
    "    dom,\n",
    "    (total_predicted_energy_b),\n",
    "    label='Baseline'\n",
    ")\n",
    "ax[0].plot(\n",
    "    dom,\n",
    "    (total_true_energy),\n",
    "    label='Truth'\n",
    ")\n",
    "ax[0].set_ylabel('Total Energy')\n",
    "ax[0].set_xlabel('Time')\n",
    "ax[0].set_ylim(-15, 0)\n",
    "ax[0].legend()\n",
    "\n",
    "ax[1].plot(\n",
    "    dom,\n",
    "    (total_predicted_energy-total_true_energy)/scale,\n",
    "    label='LNN'\n",
    ")\n",
    "ax[1].plot(\n",
    "    dom,\n",
    "    (total_predicted_energy_b-total_true_energy)/scale,\n",
    "    label='Baseline'\n",
    ")\n",
    "ax[1].set_ylabel('Error in Total Energy\\n/Max Potential Energy')\n",
    "ax[1].set_xlabel('Time')\n",
    "ax[1].set_ylim(-0.06, 0.01)\n",
    "ax[1].legend()\n",
    "\n",
    "\n",
    "plt.tight_layout()    \n",
    "plt.savefig('energy_discrepancy_plot.pdf')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "best_loss = np.inf\n",
    "best_params = None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running 0\n",
      "Cur best 0.5416298\n",
      "iteration=1, train_loss=3.281229, test_loss=3.362365\n",
      "iteration=2, train_loss=3.338815, test_loss=3.414896\n",
      "iteration=3, train_loss=3.173423, test_loss=3.245358\n",
      "iteration=5, train_loss=2.876028, test_loss=2.953962\n",
      "iteration=8, train_loss=2.617690, test_loss=2.711931\n",
      "iteration=12, train_loss=2.461916, test_loss=2.569056\n",
      "iteration=14, train_loss=2.420607, test_loss=2.529519\n",
      "iteration=16, train_loss=2.393510, test_loss=2.502541\n",
      "iteration=24, train_loss=2.345873, test_loss=2.449337\n",
      "iteration=69, train_loss=2.283767, test_loss=2.380207\n",
      "iteration=71, train_loss=2.279208, test_loss=2.375960\n",
      "iteration=100, train_loss=2.052558, test_loss=2.182241\n",
      "iteration=126, train_loss=2.150693, test_loss=2.242196\n",
      "iteration=138, train_loss=2.043466, test_loss=2.179271\n",
      "iteration=139, train_loss=2.103001, test_loss=2.250430\n",
      "iteration=159, train_loss=1.884455, test_loss=2.035448\n",
      "iteration=200, train_loss=2.981948, test_loss=3.082102\n",
      "iteration=300, train_loss=2.960814, test_loss=3.060463\n",
      "iteration=400, train_loss=2.960811, test_loss=3.060462\n",
      "iteration=500, train_loss=2.960812, test_loss=3.060462\n",
      "iteration=600, train_loss=2.960812, test_loss=3.060462\n",
      "iteration=700, train_loss=2.960812, test_loss=3.060462\n",
      "iteration=800, train_loss=2.960811, test_loss=3.060461\n",
      "iteration=900, train_loss=2.960811, test_loss=3.060461\n",
      "Running 1\n",
      "Cur best 0.5416298\n",
      "iteration=1, train_loss=3.317755, test_loss=3.405537\n",
      "iteration=7, train_loss=3.069434, test_loss=3.143141\n",
      "iteration=9, train_loss=2.917306, test_loss=3.000417\n",
      "iteration=15, train_loss=2.608413, test_loss=2.708017\n",
      "iteration=18, train_loss=2.543802, test_loss=2.646056\n",
      "iteration=32, train_loss=2.374668, test_loss=2.479213\n",
      "iteration=39, train_loss=2.299356, test_loss=2.407058\n",
      "iteration=43, train_loss=2.278494, test_loss=2.383728\n",
      "iteration=48, train_loss=2.254509, test_loss=2.356943\n",
      "iteration=56, train_loss=2.220623, test_loss=2.325905\n",
      "iteration=79, train_loss=2.060705, test_loss=2.196907\n",
      "iteration=81, train_loss=2.041281, test_loss=2.188952\n",
      "iteration=100, train_loss=2.084676, test_loss=2.204079\n",
      "iteration=125, train_loss=2.075690, test_loss=2.199195\n",
      "iteration=200, train_loss=3.000287, test_loss=3.060724\n",
      "iteration=300, train_loss=2.658924, test_loss=2.740549\n",
      "iteration=400, train_loss=2.534858, test_loss=2.626127\n",
      "iteration=500, train_loss=2.471405, test_loss=2.568029\n",
      "iteration=600, train_loss=2.436610, test_loss=2.535066\n",
      "iteration=700, train_loss=2.397138, test_loss=2.495735\n",
      "iteration=800, train_loss=2.320425, test_loss=2.424311\n",
      "iteration=900, train_loss=2.121181, test_loss=2.235008\n",
      "iteration=919, train_loss=2.059577, test_loss=2.177489\n",
      "Running 2\n",
      "Cur best 0.5416298\n",
      "iteration=1, train_loss=3.440591, test_loss=3.480830\n",
      "iteration=2, train_loss=2.827830, test_loss=2.907219\n",
      "iteration=9, train_loss=2.746610, test_loss=2.831154\n",
      "iteration=13, train_loss=2.650030, test_loss=2.734251\n",
      "iteration=18, train_loss=2.537922, test_loss=2.626945\n",
      "iteration=40, train_loss=2.310189, test_loss=2.429695\n",
      "iteration=42, train_loss=2.259042, test_loss=2.373740\n",
      "iteration=50, train_loss=2.158052, test_loss=2.284200\n",
      "iteration=100, train_loss=2.599460, test_loss=2.704235\n",
      "iteration=134, train_loss=2.432410, test_loss=2.542955\n",
      "iteration=200, train_loss=2.345119, test_loss=2.447702\n",
      "iteration=240, train_loss=2.313213, test_loss=2.408730\n",
      "iteration=270, train_loss=2.267631, test_loss=2.355745\n",
      "iteration=300, train_loss=2.167197, test_loss=2.254341\n",
      "iteration=321, train_loss=2.142529, test_loss=2.229394\n",
      "iteration=400, train_loss=1.977052, test_loss=2.082325\n",
      "iteration=466, train_loss=1.770378, test_loss=1.895221\n",
      "iteration=500, train_loss=1.714534, test_loss=1.860020\n",
      "iteration=504, train_loss=1.720593, test_loss=1.862275\n",
      "iteration=559, train_loss=1.666239, test_loss=1.814709\n",
      "iteration=582, train_loss=1.630734, test_loss=1.769616\n",
      "iteration=600, train_loss=1.634274, test_loss=1.775872\n",
      "iteration=700, train_loss=1.544320, test_loss=1.685645\n",
      "iteration=712, train_loss=1.545025, test_loss=1.697033\n",
      "iteration=800, train_loss=1.527132, test_loss=1.672148\n",
      "iteration=808, train_loss=1.677876, test_loss=1.650595\n",
      "iteration=848, train_loss=1.447197, test_loss=1.600824\n",
      "iteration=900, train_loss=1.371689, test_loss=1.529193\n",
      "iteration=941, train_loss=1.347298, test_loss=1.505083\n",
      "iteration=1000, train_loss=1.319070, test_loss=1.476217\n",
      "iteration=1051, train_loss=1.266694, test_loss=1.438258\n",
      "iteration=1175, train_loss=1.226607, test_loss=1.381197\n",
      "iteration=1188, train_loss=1.246742, test_loss=1.393102\n",
      "iteration=1226, train_loss=1.175629, test_loss=1.330247\n",
      "iteration=1481, train_loss=1.119713, test_loss=1.259370\n",
      "iteration=1500, train_loss=1.069470, test_loss=1.215181\n",
      "iteration=1611, train_loss=1.071569, test_loss=1.210487\n",
      "iteration=1736, train_loss=1.024607, test_loss=1.155848\n",
      "iteration=1839, train_loss=1.002461, test_loss=1.130287\n",
      "iteration=2000, train_loss=0.970661, test_loss=1.104429\n",
      "iteration=2022, train_loss=0.947728, test_loss=1.085750\n",
      "iteration=2095, train_loss=0.972037, test_loss=1.094629\n",
      "iteration=2351, train_loss=0.924950, test_loss=1.063900\n",
      "iteration=2500, train_loss=0.945857, test_loss=1.077084\n",
      "iteration=2568, train_loss=0.932887, test_loss=1.063079\n",
      "iteration=2901, train_loss=0.957002, test_loss=1.103113\n",
      "iteration=2992, train_loss=0.892175, test_loss=1.031748\n",
      "iteration=3000, train_loss=0.901037, test_loss=1.032903\n",
      "iteration=3302, train_loss=0.900294, test_loss=1.039103\n",
      "iteration=3500, train_loss=0.931067, test_loss=1.058354\n",
      "iteration=3940, train_loss=0.926068, test_loss=1.055898\n",
      "iteration=4000, train_loss=0.893681, test_loss=1.028090\n",
      "iteration=4500, train_loss=0.896116, test_loss=1.031149\n",
      "iteration=4533, train_loss=0.897025, test_loss=1.026571\n",
      "iteration=5000, train_loss=0.901224, test_loss=1.030433\n",
      "iteration=5500, train_loss=0.935792, test_loss=1.066033\n",
      "iteration=5503, train_loss=0.875628, test_loss=1.012658\n",
      "iteration=6000, train_loss=0.886833, test_loss=1.021481\n",
      "iteration=6500, train_loss=0.868955, test_loss=1.005378\n",
      "Running 3\n",
      "Cur best 0.5416298\n",
      "iteration=1, train_loss=164639319464549901665380073472.000000, test_loss=3081212275934353162240.000000\n",
      "iteration=3, train_loss=5.067006, test_loss=5.148108\n",
      "iteration=10, train_loss=2.743804, test_loss=2.803879\n",
      "iteration=11, train_loss=2.773528, test_loss=2.827923\n",
      "iteration=12, train_loss=2.837285, test_loss=2.890387\n",
      "iteration=16, train_loss=3.127988, test_loss=3.174890\n",
      "iteration=100, train_loss=4.512383, test_loss=4.532230\n",
      "iteration=200, train_loss=4.513072, test_loss=4.532910\n",
      "iteration=300, train_loss=4.513071, test_loss=4.532909\n",
      "iteration=400, train_loss=4.513073, test_loss=4.532909\n",
      "iteration=500, train_loss=4.513072, test_loss=4.532909\n",
      "iteration=600, train_loss=4.513072, test_loss=4.532908\n",
      "iteration=700, train_loss=4.513072, test_loss=4.532909\n",
      "iteration=800, train_loss=4.513072, test_loss=4.532908\n",
      "iteration=900, train_loss=4.513072, test_loss=4.532908\n",
      "Running 4\n",
      "Cur best 0.5416298\n"
     ]
    }
   ],
   "source": [
    "for _i in range(1000):\n",
    "    print('Running', _i)\n",
    "    print('Cur best', str(best_loss))\n",
    "\n",
    "    init_random_params, nn_forward_fn = extended_mlp(args)\n",
    "    import HyperparameterSearch\n",
    "    HyperparameterSearch.nn_forward_fn = nn_forward_fn\n",
    "    _, init_params = init_random_params(rng+1, (-1, 4))\n",
    "    rng += 1\n",
    "    model = (nn_forward_fn, init_params)\n",
    "    opt_init, opt_update, get_params = optimizers.adam(3e-4)##lambda i: jnp.select([i<10000, i>= 10000], [args.lr, args.lr2]))\n",
    "    opt_state = opt_init(init_params)\n",
    "    from jax.tree_util import tree_flatten\n",
    "    from HyperparameterSearch import make_loss, train\n",
    "    loss = make_loss(args)\n",
    "    from copy import deepcopy as copy\n",
    "    train(args, model, data, rng);\n",
    "    from jax.tree_util import tree_flatten\n",
    "\n",
    "    @jax.jit\n",
    "    def update_derivative(i, opt_state, batch, l2reg):\n",
    "        params = get_params(opt_state)\n",
    "        param_update = jax.grad(loss, 0)(params, batch, l2reg)\n",
    "        leaves, _ = tree_flatten(param_update)\n",
    "        infinities = sum((~jnp.isfinite(param)).sum() for param in leaves)\n",
    "\n",
    "        def true_fun(x):\n",
    "            #No introducing NaNs.\n",
    "            return opt_update(i, param_update, opt_state), params\n",
    "\n",
    "        def false_fun(x):\n",
    "            #No introducing NaNs.\n",
    "            return opt_state, params\n",
    "\n",
    "        return jax.lax.cond(infinities==0, 0, true_fun, 0, false_fun)\n",
    "\n",
    "\n",
    "    best_small_loss = np.inf\n",
    "    (nn_forward_fn, init_params) = model\n",
    "    data = {k: jax.device_put(v) for k,v in data.items()}\n",
    "    iteration = 0\n",
    "    train_losses, test_losses = [], []\n",
    "    lr = args.lr\n",
    "    opt_init, opt_update, get_params = optimizers.adam(lr)\n",
    "    opt_state = opt_init(init_params)\n",
    "    bad_iterations = 0\n",
    "    offset = 0\n",
    "    \n",
    "    while iteration < 20000:\n",
    "        iteration += 1\n",
    "        rand_idx = jax.random.randint(rng, (args.batch_size,), 0, len(data['x']))\n",
    "        rng += 1\n",
    "\n",
    "        batch = (data['x'][rand_idx], data['dx'][rand_idx])\n",
    "        opt_state, params = update_derivative(iteration+offset, opt_state, batch, args.l2reg)\n",
    "        small_loss = loss(params, batch, 0.0)\n",
    "\n",
    "        new_small_loss = False\n",
    "        if small_loss < best_small_loss:\n",
    "\n",
    "            best_small_loss = small_loss\n",
    "            new_small_loss = True\n",
    "        \n",
    "        if jnp.isnan(small_loss).sum() or new_small_loss or (iteration % 500 == 0) or (iteration < 1000 and iteration % 100 == 0):\n",
    "            params = get_params(opt_state)\n",
    "            train_loss = loss(params, (data['x'], data['dx']), 0.0)/len(data['x'])\n",
    "            train_losses.append(train_loss)\n",
    "            test_loss = loss(params, (data['test_x'], data['test_dx']), 0.0)/len(data['test_x'])\n",
    "            test_losses.append(test_loss)\n",
    "            \n",
    "            if iteration >= 1000 and test_loss > 1.5:\n",
    "                #Only good seeds allowed!\n",
    "                break\n",
    "\n",
    "            if test_loss < best_loss:\n",
    "                best_loss = test_loss\n",
    "                best_params = copy(params)\n",
    "                bad_iterations = 0\n",
    "                offset += iteration\n",
    "                iteration = 0 #Keep going since this one is so good!\n",
    "\n",
    "            if jnp.isnan(test_loss).sum():\n",
    "                break\n",
    "                lr = lr/2\n",
    "                opt_init, opt_update, get_params = optimizers.adam(lr)\n",
    "                opt_state = opt_init(best_params)\n",
    "                bad_iterations = 0\n",
    "\n",
    "            print(f\"iteration={iteration}, train_loss={train_loss:.6f}, test_loss={test_loss:.6f}\")\n",
    "\n",
    "        bad_iterations += 1\n",
    "    \n",
    "    import pickle as pkl\n",
    "    if best_loss < np.inf:\n",
    "        pkl.dump({'params': best_params, 'args': args},\n",
    "             open('params_for_loss_{}_nupdates=1.pkl'.format(best_loss), 'wb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "import importlib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "import lnn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<module 'lnn' from '../lnn.py'>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "importlib.reload(lnn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "from lnn import lagrangian_eom_rk4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DeviceArray(1.8673568, dtype=float32)"
      ]
     },
     "execution_count": 236,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "loss(best_params, (data['test_x'], data['test_dx']), 0.0)/len(data['test_x'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "best_loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "main2",
   "language": "python",
   "name": "main2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
